﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;
using consultasSql;
using consultasSql.consultasVarias;
using ot;
using seccCableSeleccionado;
using validarDatos;

public partial class Stdby_OrdenTrabajo_tabOrdenTrabajo_insAsociados : System.Web.UI.Page
{
    private void mostrarMensaje(string mensaje)
    {
        System.Text.StringBuilder sbMensaje = new System.Text.StringBuilder();

        sbMensaje.Append("<script type='text/javascript'>");
        sbMensaje.AppendFormat("alert('{0}');", mensaje);
        sbMensaje.Append("</script>");
        ClientScript.RegisterClientScriptBlock(this.GetType(), "Mensaje", sbMensaje.ToString());
    }


    /*---------------------------------------------------------*/

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("../tabOrdenTrabajo/insAsociados.aspx", false);
    }

    /*---------------------------------------------------------*/


    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["idOt"] != null)
            {

                /*--------------*/
                //recargo la pagina para poder mostrar los botones que se activaron luego de guardar los datos, de acuerdo a los permisos
                string exito = Request.QueryString["exito"];

                if (!String.IsNullOrEmpty(exito))
                {
                    if (exito.Equals("0"))
                    {
                        mostrarMensaje(CMensajes.mensajeOperacionExitosa());
                    }
                }
                /*--------------*/



                if (!String.IsNullOrEmpty(Session["idOt"].ToString().Trim()))
                {
                    ViewState["ordenarGrilla"] = "ASC";

                    cargarCampos(Convert.ToInt32(Session["idOt"].ToString().Trim()));
                }
                else
                {
                    Response.Redirect("~/Stdby/OrdenTrabajo/tabOrdenTrabajo/ingresoOrdenTrabajo.aspx", false);
                }
            }
            else
            {
                Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
            }
        }

    }


    private void cargarCampos(int Id)
    {
        try
        {
            string consulta = "SELECT CASE WHEN OtCab.AsociaInsumos = 1 THEN 1 ELSE 0 END AS 'AsociaInsumos', CASE WHEN OtCab.LlevaCable = 1 THEN 0 WHEN Movimiento.TipoMov LIKE 'De insumos y otros' THEN 0 ELSE 1 END AS 'EnabledInsumos', OtCab.DetalleInsumos FROM OTCab LEFT JOIN Movimiento ON OtCab.IdMov = Movimiento.Id WHERE OtCab.Id = @Id";

            SqlCommand command = new SqlCommand();


            command.CommandType = CommandType.Text;
            command.CommandText = consulta;

            command.Parameters.Clear();

            command.Parameters.AddWithValue("@Id", Id);


            DataTable tabla = new CDarDataSet().darDataTable(command);

            cbxInsumos.Checked = Convert.ToBoolean(tabla.Rows[0]["AsociaInsumos"]);

            cbxInsumos.Enabled = Convert.ToBoolean(tabla.Rows[0]["EnabledInsumos"]);

            txtObservaciones.Text = tabla.Rows[0][1].ToString();

            cbxInsumosChecked();

        }
        catch { }

    }
    

   
    protected void cbxInsumos_CheckedChanged(object sender, EventArgs e)
    {
        cbxInsumosChecked();
    }

    //compruebo si esta seleccionado
    private void cbxInsumosChecked()
    {
        //solo si se selecciona el cbx se habilitan los campos
        if (cbxInsumos.Checked)
        {
            txtObservaciones.Enabled = true;
            cargarGrilla(true, "");
            Grilla.Enabled = true;
        }
        else
        {
            txtObservaciones.Text = "";
            txtObservaciones.Enabled = false;
            cargarGrilla(false, "");
            Grilla.Enabled = false;
        }

        
    }


    /*------GRILLA SECCIÓN CABLE-------*/

    protected void Grilla_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        try
        {

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes["onmouseover"] = "javascript:setMouseOverColor(this);";
                e.Row.Attributes["onmouseout"] = "javascript:setMouseOutColor(this);";
            }
        }
        catch { }
    }


    //cargo grilla de seccion cable
    private void cargarGrilla(bool marcar, string ordenar)
    {
        try
        {
            Grilla.DataSource = darDataSet(ordenar);
            Grilla.DataBind();


            if (marcar)
            {
                marcarCampos();
            }
        }
        catch { }
    }

    //dataset de seccion de cables
    private DataSet darDataSet(string ord)
    {
        string ordenar = "";

        if (!String.IsNullOrEmpty(ord.Trim()))
        {
            ordenar = " ORDER BY " + ord.Trim();
        }

        string consulta = "SELECT SeccCable.Id AS 'Id', Cable.Movex AS 'MovexCable', CONVERT(VARCHAR(10), SeccCable.FechaAlta, 103) AS 'FechaAlta', SeccCable.Codigo, SeccCable.Project, SeccCable.LongitudMts, SeccCable.NroCorte, CASE ISNULL(SeccCable.IdOtCab, 0) WHEN 0 THEN 'False' WHEN '' THEN 'False' ELSE 'True' END AS 'check' FROM SeccCable INNER JOIN Cable ON SeccCable.IdCable = Cable.Id WHERE SeccCable.DeBaja = 0  AND ((SeccCable.IdOtCab = @IdOtCab) OR (SeccCable.IdOtCab IS NULL) OR (SeccCable.IdOtCab = ''))" + ordenar;

        SqlCommand command = new SqlCommand();
        command.CommandType = CommandType.Text;
        command.CommandText = consulta;

        command.Parameters.Clear();

        command.Parameters.AddWithValue("@IdOtCab", Convert.ToInt32(Session["idOt"].ToString().Trim()));

        return new CDarDataSet().darDataSet(command);

    }

    //marco los campos del griedview
    private void marcarCampos()
    {
         foreach (GridViewRow row in Grilla.Rows) //recorro la grilla en busca de las filas seleccionadas
        {
            try
            {
                if (row != null)
                {
                    if (Grilla.DataKeys[row.RowIndex].Values["check"].ToString().Equals("True"))
                    {
                        ((CheckBox)row.FindControl("cbxSeleccionFilaGrilla")).Checked = true;
                    }
                }
            }
            catch { }
        } 

    }

    //ordenar grilla
    protected void Grilla_Sorting(object sender, GridViewSortEventArgs e)
    {
        try
        {
            cargarGrilla(true, e.SortExpression + " " + ordenarGrilla());
        }
        catch { }
    }

    private string ordenarGrilla()
    {
        try
        {
            if (!String.IsNullOrEmpty(ViewState["ordenarGrilla"].ToString()))
            {
                if (ViewState["ordenarGrilla"].ToString() == "DESC")
                {
                    ViewState["ordenarGrilla"] = "ASC";
                }
                else
                {
                    ViewState["ordenarGrilla"] = "DESC";
                }

            }
            else
            {
                ViewState["ordenarGrilla"] = "ASC";
            }
        }
        catch { }

        return ViewState["ordenarGrilla"].ToString();
    }


    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        if (comprobarCampos())
        {
            updateInsert();
        }
    }

  
    //comprobar campos
    private bool comprobarCampos()
    {

        bool bandera = true;

        try
        {
            if (cbxInsumos.Checked) //desvinculo todos los insumos si no esta check
            {
                bool insumo = false;

                if (!String.IsNullOrEmpty(txtObservaciones.Text.Trim()))
                {
                    if (!CValidaDatos.validaPalabras(txtObservaciones.Text.Trim()))
                    {
                        txtObservaciones.ToolTip = CMensajes.mensajeValidaPalabra();
                        lblObservaciones.Visible = true;
                        bandera = false;
                    }
                    else
                    {
                        insumo = true;
                    }
                }


                bool seleccionoCable = true;

                if (!cbxInsumos.Enabled)
                {
                    seleccionoCable = false;
                }


                foreach (GridViewRow row in Grilla.Rows) //recorro la grilla en busca de las filas seleccionadas
                {
                    if (row != null)
                    {
                        CheckBox cbx = (CheckBox)row.FindControl("cbxSeleccionFilaGrilla");

                        if (cbx != null && cbx.Checked)
                        {
                            insumo = true;
                            seleccionoCable = true;
                        }
                    }
                }


                if (!seleccionoCable)
                {
                    bandera = false;
                    mostrarMensaje("Debe seleccionar al menos una sección de Cable.");
                }
                


                if (!insumo)
                {
                    bandera = false;
                    mostrarMensaje("Ingrese detalle de insumos o seleccione una sección de cable.");
                }

            }


        }
        catch
        {
            bandera = false;
        }

        return bandera;
    }


    //update o insertObjeto_Accesorios
    private void updateInsert()
    {
        try
        {

            CInsAsociados objeto = new CInsAsociados();

            objeto.AsociaInsumos = cbxInsumos.Checked;

            objeto.DetalleInsumos = txtObservaciones.Text.Trim();

            if (Session["idOt"] != null)
            {
                string idOtCab = Session["idOt"].ToString().Trim();

                foreach (GridViewRow row in Grilla.Rows) //recorro la grilla en busca de las filas seleccionadas
                {
                    try
                    {
                        if (row != null)
                        {
                            CSeccCableSeleccionado seccCable = new CSeccCableSeleccionado();

                            seccCable.Id = Convert.ToInt32(Grilla.DataKeys[row.RowIndex].Value);

                            CheckBox cbx = (CheckBox)row.FindControl("cbxSeleccionFilaGrilla");

                            if (cbx != null && cbx.Checked)
                            {
                                seccCable.IdOtCab = idOtCab;
                            }
                            else
                            {
                                seccCable.IdOtCab = null;
                            }

                            objeto.cargarListaCable(seccCable);
                        }
                    }
                    catch { }
                }
            }


            CConsultaInsAsociados consulta = new CConsultaInsAsociados();


            if (Session["idOt"] != null)
            {
                if (!String.IsNullOrEmpty(Session["idOt"].ToString().Trim()))
                {
                    objeto.Id = Convert.ToInt32(Session["idOt"].ToString().Trim());

                    if (consulta.update(objeto))
                    {
                        //si fue exitosa envio 0, para luego mostrar el mensaje
                        Response.Redirect("../tabOrdenTrabajo/insAsociados.aspx?exito=0", false);
                    }
                    else
                    {
                        mostrarMensaje(CMensajes.mensajeOperacionFallida());
                    }
                }
                else //si es null, redirigimos, debido a que algo sucedio
                {
                    Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
                }
            }
            else //si es null, redirigimos, debido a que algo sucedio
            {
                Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
            }

        }
        catch
        {
            mostrarMensaje(CMensajes.mensajeOperacionFallida());
        }
    }


}

    